
'''
property  内置的方法： 作用就是将一个方法虚拟成一个属性
一种是使用装饰器
二种就是内置函数的方式
'''
# 方法一
# class Student:
#     def __init__(self,name,age):
#         self.name = name
#         self.__age = age
#     @property  #这是  获取年龄方法变成属性
#     def age(self):
#         #类的内部可以访问到私有属性
#         return  self.__age
#     @age.setter
#     def age(self,val):
#         #判断条件，判断你传入的参数是否合格
#         self.__age = val
#     @age.deleter
#     def age(self):
#         del self.__age
#
# zs = Student('张三',18)
#
# print(zs.name)
# # zs.get_age()  #调用获取年龄的方法 才能访问到
# print (zs.age)
#
# # zs.set_age(20)
# zs.age = 20
# print (zs.age)
#
# del zs.age
# print(zs.age)

# ---------------------------------------------------------------
#方法二
class Student:
    def __init__(self,name,age):
        self.name = name
        self.__age = age

    def get_age(self):
        #类的内部可以访问到私有属性
        return  self.__age

    def set_age(self,val):
        #判断条件，判断你传入的参数是否合格
        if val >= 18:
            self.__age = val
        else:
            print('年龄不符合条件')
    def del_age(self):
        del self.__age

    age = property(get_age,set_age,del_age)
zs = Student('张三',18)

print(zs.name)
# zs.get_age()  #调用获取年龄的方法 才能访问到
print (zs.age)

# zs.set_age(20)
zs.age = 16
print(zs.age)

